The present invention relates to time correcting apparatuses for correcting time lags of event trace data having event occurrence times acquired from a plurality of computing devices. In particular, the present invention relates to a time correcting apparatus for correcting a relative time lag of event trace data generated across a plurality of computing devices by calculating the difference as a time-offset value between the times of internal clocks in the computing devices based on the event data about communication between the computing devices and by adding the time-offset value to the time included in the acquired event trace data.
In general, event trace data is acquired for analysis when the performance of computing devices, such as computers, is to be measured or transaction profiles are to be generated. More specifically, each time an event (e.g., startup of a program or occurrence of an interrupt) is processed or executed on a computing device, event trace data indicating information such as the type of the event, the status of the computing device, and the event occurrence time is generated. The generated event trace data is acquired and analyzed to, for example, measure the performance of the computing device, generate a transaction profile, or debug a program. These technologies are described in, for example, Japanese Unexamined Patent Publication (JP-A) No. 2000-10815 (Document 1), JP-A No. 2003-157185 (Document 2), and JP-A No. 2004-005198 (Document 3).
In a computing device system including a plurality of computing devices, there is a case that one typical processing operation (transaction) is completed by sequentially processing and executing processing programs existing across the plurality of computing devices. In an n-tier system, for example, three types of servers (computing devices), a Web server, an application server, and a database server, jointly process and execute a transaction requested by a user.
When the performance of one processing operation (transaction) processed and executed across a plurality of computing devices, as described above, is to be analyzed, many items of event trace data, each indicating the performance status of the program running on a computing device, must be linked together so that the items of trace data constitute one transaction. For example, in order to accurately reconstruct one transaction executed across a plurality of independently operable computing devices when a transaction profile is to be generated based on event trace data, it is necessary to associate the trace data in order of event occurrence time.
Although association of these items of event trace data in order of event occurrence time can be achieved based on the event-occurrence-time data included in each of the event data items, the absolute times of the computing devices needs to be completely synchronized for accurate association. In a practical system, however, there is a problem in that accurate association of event trace data in order of event occurrence time is impossible due to relative time differences in internal clocks of the computing devices.
There is available one method for synchronizing internal clocks across a plurality of independently operable computing devices based on a protocol called the Network Time Protocol (NTP). According to NTP, the computing devices connect to a determined reference clock via a network to adjust the times of their internal clocks.
This NTP, however, is too inaccurate to achieve complete time synchronization. More specifically, it is difficult with NTP to achieve time synchronization, for example, within an error of about 10 ms. Furthermore, NTP is not capable of correcting an extremely large time lag.
In recent computing device systems, a plurality of events can occur within a period of about 10 ms depending on the processing performance of the computing device. In these computing devices, a plurality of programs is very likely to be executed within a period of about 10 ms, and therefore, it is difficult to solve the above-described problem by time synchronization methods based on NTP or equivalents, which can eliminate errors only down to about 10 ms.
Furthermore, in terms of maintenance, it is difficult or not practical to correct the time of the clock in a computing device currently in operation for the purpose of performance measurement or analysis.
In addition to the above-described method for synchronizing clock times, there is available another known method for automatically synchronizing the time of event trace data generated in a plurality of computing devices so that a certain accuracy is ensured.
For example, JP-A No. 62-232055 (Document 4) describes the following method for generating event trace data. According to this method for generating event trace data, a host computer stores the time when tracing is started as the initial time information, and each terminal starts counting with its timer as soon as an event occurs. The time information is synchronized by adding the count value of each terminal to the initial time information of the host computer.
In addition, JP-A No. 2000-348007 (Document 5) describes the following method for achieving commonality of the trace time information. According to this method, commonality of the trace time information is achieved by providing a counter register that measures, on the order of microseconds, a time as a single item of time information used for trace information generated in a plurality of computing devices (processors).
According to the method described in the document 4, each terminal needs to transmit the count value measured with the timer to the host computer.
Furthermore, the host computer needs to have a function for converting the count value received from each terminal into time information.
On the other hand, the method described in the document 5 requires separately a timekeeping section for measuring common time information on the order of microseconds.
As described above, these known methods need separately a section for transmitting and converting time information for time synchronization, and are thus difficult to smoothly adopt for existing computing device systems.
Furthermore, the above-described methods, if adopted, may complicate the structures of computing devices, and are therefore difficult to put into practice.
For these reasons, there is a growing need for technology that can easily and accurately achieve the synchronization of time information across a plurality of computing devices without a special device or structure, though, unfortunately, no effective method has been proposed as of this writing.